main: Report correct target for button release events
authorBenjamin Otte <otte@redhat.com>
Thu, 4 Oct 2018 11:08:14 +0000 (13:08 +0200)
committerTimm Bäder <mail@baedert.org>
Tue, 29 Jan 2019 06:19:54 +0000 (07:19 +0100)
Button release events should not go to the widget below the pointer, but
to the widget that received the original button press.

Fixes #24

gtk/gtkmain.c

index 25d39d785d8d86ad6c0186eb80bce73feba5c92d..8222f5774b7533e6f8345c95bc6e2b6510afb375 100644 (file)
@@ -1651,11 +1651,11 @@ handle_pointing_event (GdkEvent *event)
 
       if (event->any.type == GDK_BUTTON_RELEASE)
         {
-          old_target = target;
-          target = gtk_widget_pick (GTK_WIDGET (toplevel), x, y);
-          if (target == NULL)
-            target = GTK_WIDGET (toplevel);
-          gtk_synthesize_crossing_events (toplevel, old_target, target, event,
+          GtkWidget *new_target;
+          new_target = gtk_widget_pick (GTK_WIDGET (toplevel), x, y);
+          if (new_target == NULL)
+            new_target = GTK_WIDGET (toplevel);
+          gtk_synthesize_crossing_events (toplevel, target, new_target, event,
                                           GDK_CROSSING_UNGRAB);
           gtk_window_maybe_update_cursor (toplevel, NULL, device);
         }